{ "nbformat": 4, "nbformat_minor": 0, "metadata": { "kernelspec": { "display_name": "Python 3", "language": "python", "name": "python3" }, "language_info": { "codemirror_mode": { "name": "ipython", "version": 3 }, "file_extension": ".py", "mimetype": "text/x-python", "name": "python", "nbconvert_exporter": "python", "pygments_lexer": "ipython3", "version": "3.7.3" }, "colab": { "name": "404_Adams Moulton Population Equations.ipynb", "provenance": [], "include_colab_link": true } }, "cells": [ { "cell_type": "markdown", "metadata": { "id": "view-in-github", "colab_type": "text" }, "source": [ "\"Open" ] }, { "cell_type": "markdown", "metadata": { "id": "IQ0ChSSbaNrx" }, "source": [ "# 1 Step Adams Moulton \n", "#### John S Butler \n", "john.s.butler@tudublin.ie \n", "[Course Notes](https://johnsbutler.netlify.com/files/Teaching/Numerical_Analysis_for_Differential_Equations.pdf) [Github](https://github.com/john-s-butler-dit/Numerical-Analysis-Python)\n", "\n", "\n", "This notebook implements the 1 step Adams Moulton method for three different population intial value problems.\n", "\n", "# Formula\n", "The general 1 step Adams-Moulton method for the first order differential equation\n", "\\begin{equation} y^{'} = f(t,y) \\end{equation}\n", "numerical approximates $y$ the at time point $t_i$ as $w_i$\n", "with the formula:\n", "\\begin{equation} w_{i+1}=w_i+\\frac{h}{2}\\big[f(t_{i+1},w_{i+1})+f(t_{i},w_{i})\\big],\\end{equation}\n", "for $i=0,...,N-1$, where \n", "\n", "and $h$ is the stepsize.\n", "\n", "To illustrate the method we will apply it to three intial value problems:\n", "## 1. Linear \n", "Consider the linear population Differential Equation\n", "\\begin{equation} y^{'}=0.1y, \\ \\ (2000 \\leq t \\leq 2020), \\end{equation}\n", "with the initial condition,\n", "\\begin{equation}y(2000)=6.\\end{equation}\n", "\n", "## 2. Non-Linear Population Equation \n", "Consider the non-linear population Differential Equation\n", "\\begin{equation} y^{'}=0.2y-0.01y^2, \\ \\ (2000 \\leq t \\leq 2020), \\end{equation}\n", "with the initial condition,\n", "\\begin{equation}y(2000)=6.\\end{equation}\n", "\n", "## 3. Non-Linear Population Equation with an oscillation \n", "Consider the non-linear population Differential Equation with an oscillation \n", "\\begin{equation} y^{'}=0.2y-0.01y^2+\\sin(2\\pi t), \\ \\ (2000 \\leq t \\leq 2020), \\end{equation}\n", "with the initial condition,\n", "\\begin{equation}y(2000)=6.\\end{equation}" ] }, { "cell_type": "markdown", "metadata": { "id": "MbCSlQAWaNrz" }, "source": [ "#### Setting up Libraries" ] }, { "cell_type": "code", "metadata": { "id": "Q0JdHlleaNr0" }, "source": [ "## Library\n", "import numpy as np\n", "import math \n", "import pandas as pd\n", "%matplotlib inline\n", "import matplotlib.pyplot as plt # side-stepping mpl backend\n", "import matplotlib.gridspec as gridspec # subplots\n", "import warnings\n", "\n", "warnings.filterwarnings(\"ignore\")" ], "execution_count": 1, "outputs": [] }, { "cell_type": "markdown", "metadata": { "id": "aGTqySR_aNr5" }, "source": [ "## Discrete Interval\n", "The continuous time $a\\leq t \\leq b $ is discretised into $N$ points seperated by a constant stepsize\n", "\\begin{equation} h=\\frac{b-a}{N}.\\end{equation}\n", "Here the interval is $2000\\leq t \\leq 2020,$ \n", "\\begin{equation} h=\\frac{2020-2000}{200}=0.1.\\end{equation}\n", "This gives the 201 discrete points:\n", "\\begin{equation} t_0=2000, \\ t_1=2000.1, \\ ... t_{200}=2020. \\end{equation}\n", "This is generalised to \n", "\\begin{equation} t_i=2000+i0.1, \\ \\ \\ i=0,1,...,200.\\end{equation}\n", "The plot below shows the discrete time steps:" ] }, { "cell_type": "code", "metadata": { "id": "d2tHHW71aNr6", "outputId": "9fbebd76-bb3a-47d0-ef77-280d9880078d", "colab": { "base_uri": "https://localhost:8080/", "height": 298 } }, "source": [ "### DISCRETE TIME\n", "N=20\n", "t_end=2020.0\n", "t_start=2000.0\n", "h=((t_end-t_start)/N)\n", "t=np.arange(t_start,t_end+h/2,h)\n", "\n", "## PLOTS TIME\n", "fig = plt.figure(figsize=(10,4))\n", "plt.plot(t,0*t,'o:',color='red')\n", "plt.title('Illustration of discrete time points for h=%s'%(h))\n", "plt.show()\n", "len(t)" ], "execution_count": 2, "outputs": [ { "output_type": "display_data", "data": { "image/png": "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\n", "text/plain": [ "
" ] }, "metadata": { "needs_background": "light" } }, { "output_type": "execute_result", "data": { "text/plain": [ "21" ] }, "metadata": {}, "execution_count": 2 } ] }, { "cell_type": "markdown", "metadata": { "id": "abgucirkaNr_" }, "source": [ "# 1. Linear Population Equation\n", "## Exact Solution \n", "The linear population equation\n", "\\begin{equation} y^{'}=0.1y, \\ \\ (2000 \\leq t \\leq 2020), \\end{equation}\n", "with the initial condition,\n", "\\begin{equation}y(2000)=6.\\end{equation}\n", "has a known exact (analytic) solution\n", "\\begin{equation} y(t)=6e^{0.1(t-2000)}. \\end{equation}\n", "\n", "## Specific 1 step Adams Moulton\n", "The specific 1 step Adams Moulton for the linear population equation is:\n", "\n", "\\begin{equation}w_{i+1}=w_{i}+\\frac{h}{2}\\big[0.1w_{i+1}+0.1w_i\\big] \\end{equation}\n", "where\n", "\\begin{equation}f(t,y)=0.1y,\\end{equation}" ] }, { "cell_type": "code", "metadata": { "id": "lIE-s-9waNr_" }, "source": [ "## THIS IS THE RIGHT HANDSIDE OF THE LINEAR POPULATION DIFFERENTIAL \n", "## EQUATION\n", "def linfun(t,w):\n", " ftw=0.1*w\n", " return ftw" ], "execution_count": 3, "outputs": [] }, { "cell_type": "markdown", "metadata": { "id": "qF6HlpZkaNsC" }, "source": [ "re-arranging,\n", "\\begin{equation} \\big(1-\\frac{h}{2}(0.1)\\big)w_{i+1}=w_i+\\frac{h}{2}\\big[0.1w_i\\big], \\end{equation}\n", "\\begin{equation} w_{i+1}=\\frac{w_i+\\frac{h}{2}\\big[0.1w_i\\big]}{\\big(1-\\frac{h}{2}(0.1)\\big)}. \\end{equation}\n", "\n", "\n" ] }, { "cell_type": "code", "metadata": { "id": "jQ9OlazEaNsC" }, "source": [ "### INSERT METHOD HERE\n", "w=np.zeros(N+1) # a list of 2000+1 zeros\n", "w[0]=6 # INITIAL CONDITION\n", "for i in range(0,N):\n", " w[i+1]=(w[i]+h/2*(linfun(t[i],w[i])))/(1-0.1*h/2)\n" ], "execution_count": 4, "outputs": [] }, { "cell_type": "markdown", "metadata": { "id": "MKgWSbCqaNsF" }, "source": [ "## Plotting Results" ] }, { "cell_type": "code", "metadata": { "id": "L1QOQynmaNsF", "outputId": "9c7eb91d-1f95-4dc0-98f6-b9db6754f8cc", "colab": { "base_uri": "https://localhost:8080/", "height": 265 } }, "source": [ "## PLOTTING METHOD\n", "y=6*np.exp(0.1*(t-2000)) # EXACT SOLUTION\n", "fig = plt.figure(figsize=(8,4))\n", "plt.plot(t,w,'o:',color='purple',label='Taylor')\n", "plt.plot(t,y,'s:',color='black',label='Exact')\n", "plt.legend(loc='best')\n", "plt.show()" ], "execution_count": 5, "outputs": [ { "output_type": "display_data", "data": { "image/png": "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\n", "text/plain": [ "
" ] }, "metadata": { "needs_background": "light" } } ] }, { "cell_type": "markdown", "metadata": { "id": "yy6dTDYzaNsH" }, "source": [ "## Table\n", "The table below shows the time, the numerical approximation, $w$, the exact solution, $y$, and the exact error $|y(t_i)-w_i|$ for the linear population equation:" ] }, { "cell_type": "code", "metadata": { "id": "p7yyNPz5aNsH", "outputId": "7f497f2d-3ada-4b23-8347-735a7fb6bee9", "colab": { "base_uri": "https://localhost:8080/", "height": 696 } }, "source": [ "d = {'time t_i': t, 'Adams Approx w': w}\n", "df = pd.DataFrame(data=d)\n", "df" ], "execution_count": 6, "outputs": [ { "output_type": "execute_result", "data": { "text/html": [ "
\n", "\n", "\n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", "
time t_iAdams Approx w
02000.06.000000
12001.06.631579
22002.07.329640
32003.08.101181
42004.08.953937
52005.09.896456
62006.010.938189
72007.012.089577
82008.013.362164
92009.014.768708
102010.016.323308
112011.018.041551
122012.019.940662
132013.022.039679
142014.024.359645
152015.026.923819
162016.029.757905
172017.032.890316
182018.036.352454
192019.040.179029
202020.044.408400
\n", "
" ], "text/plain": [ " time t_i Adams Approx w\n", "0 2000.0 6.000000\n", "1 2001.0 6.631579\n", "2 2002.0 7.329640\n", "3 2003.0 8.101181\n", "4 2004.0 8.953937\n", "5 2005.0 9.896456\n", "6 2006.0 10.938189\n", "7 2007.0 12.089577\n", "8 2008.0 13.362164\n", "9 2009.0 14.768708\n", "10 2010.0 16.323308\n", "11 2011.0 18.041551\n", "12 2012.0 19.940662\n", "13 2013.0 22.039679\n", "14 2014.0 24.359645\n", "15 2015.0 26.923819\n", "16 2016.0 29.757905\n", "17 2017.0 32.890316\n", "18 2018.0 36.352454\n", "19 2019.0 40.179029\n", "20 2020.0 44.408400" ] }, "metadata": {}, "execution_count": 6 } ] }, { "cell_type": "markdown", "metadata": { "id": "lVBAzaNUaNsJ" }, "source": [ "## 2. Non-Linear Population Equation \n", "\\begin{equation} y^{'}=0.2y-0.01y^2, \\ \\ (2000 \\leq t \\leq 2020), \\end{equation}\n", "with the initial condition,\n", "\\begin{equation}y(2000)=6.\\end{equation}\n", "## Specific 1 step Adams-Moutlon method for the Non-Linear Population Equation\n", "The specific Adams-Moulton difference equation for the non-linear population equations is:\n", "\n", "\\begin{equation}w_{i+1}=w_{i}+\\frac{h}{2}\\big[ 0.2 w_{i+1}-0.01 w_{i+1}^2 \n", " + 0.2 w_i-0.01 w_i^2\\big] \\end{equation}\n", "re-arranging \n", "\\begin{equation}w_{i+1}-\\frac{h}{2}\\big( 0.2 w_{i+1}-0.01 w_{i+1}^2 \\big)=w_{i}+\\frac{h}{2}\n", " \\big[ 0.2 w_i-0.01 w_i^2\\big] \\end{equation}\n", "\n", "\n", "for $i=0,...,199$, where $w_i$ is the numerical approximation of $y$ at time $t_i$, with step size $h$ and the initial condition\n", "\\begin{equation}w_0=6.\\end{equation}\n", "\n", "PROBLEM WE CANNOT MOVE THE SQUARED (NON-LINEAR TERM) TO THE RIGHT HAND SIDE SO WE CAN SOLVE FOR w[i+1].\n", "For this reason we will use a predictor-corrector method,\n", "The predictor will be the 2-step Adams Bashforth\n", "\\begin{equation} w_{i+1}^{p}=w_{i}+\\frac{h}{2}\\big[ 3(0.2 w_{i}-0.01 w_{i}^2) \n", " - (0.2 w_{i-1}-0.01 w_{i-1}^2) \\big], \\end{equation}\n", "with the corrector being the 1-step Adams Moulton,\n", "\\begin{equation}w_{i+1}=w_{i}+\\frac{h}{2}\\big[ 0.2 w_{i+1}^p-0.01 (w^p_{i+1})^2 \n", " + 0.2 w_i-0.01 w_i^2\\big], \\end{equation} \n", "for i=1,...200.\n", " " ] }, { "cell_type": "code", "metadata": { "id": "PrdceKjEaNsK" }, "source": [ "def nonlinfun(t,w):\n", " ftw=0.2*w-0.01*w*w\n", " return ftw" ], "execution_count": 7, "outputs": [] }, { "cell_type": "code", "metadata": { "id": "hqsDwk9NaNsL" }, "source": [ "### INSERT METHOD HERE\n", "w=np.zeros(N+1)\n", "w_p=np.zeros(N+1)\n", "w[0]=6\n", "w[1]=6.084 # FROM THE THE TAYLOR METHOD\n", "w_p[0]=6\n", "w_p[1]=6.084 # FROM THE THE TAYLOR METHOD\n", "for n in range(1,N):\n", " ## Predictor\n", " w_p[n+1]=w[n]+h/2*(3*nonlinfun(t[n],w[n])-\n", " nonlinfun(t[n-1],w[n-1]))\n", " ## Corrector\n", " w[n+1]=w[n]+h/2*(nonlinfun(t[n+1],w_p[n+1])+\n", " nonlinfun(t[n],w[n]))" ], "execution_count": 8, "outputs": [] }, { "cell_type": "markdown", "metadata": { "id": "521f5f84aNsN" }, "source": [ "## Results\n", "The plot below shows the numerical approximation, $w$ (circles) for the non-linear population equation:" ] }, { "cell_type": "code", "metadata": { "id": "k3RZpNFoaNsN", "outputId": "f91568f1-6395-4817-a698-22a86b090ee4", "colab": { "base_uri": "https://localhost:8080/", "height": 573 } }, "source": [ "fig = plt.figure(figsize=(8,4))\n", "plt.plot(t,w,'-.',color='purple',label='Correcter ')\n", "plt.plot(t,w_p,':',color='red',label='Predictor ')\n", "\n", "plt.title('Non Linear Population Equation')\n", "plt.legend(loc='best')\n", "plt.xlabel('time (yrs)')\n", "plt.ylabel('Population in billions')\n", "plt.show()\n", "\n", "fig = plt.figure(figsize=(8,4))\n", "plt.plot(t,np.abs(w-w_p),':',color='purple',label='|w-w_p| ')\n", "plt.title('Comparison of Predictor and Corrector')\n", "plt.legend(loc='best')\n", "plt.xlabel('time (yrs)')\n", "plt.ylabel('Population in billions')\n", "plt.show()\n", "\n" ], "execution_count": 9, "outputs": [ { "output_type": "display_data", "data": { "image/png": "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\n", "text/plain": [ "
" ] }, "metadata": { "needs_background": "light" } }, { "output_type": "display_data", "data": { "image/png": "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\n", "text/plain": [ "
" ] }, "metadata": { "needs_background": "light" } } ] }, { "cell_type": "markdown", "metadata": { "id": "CyVtTwoEaNsO" }, "source": [ "## Table\n", "The table below shows the time and the numerical approximation, $w$, for the non-linear population equation:" ] }, { "cell_type": "code", "metadata": { "id": "GRZvMBrxaNsP", "outputId": "c8cf8330-e410-4e11-f6ce-6a7a04d4a09f", "colab": { "base_uri": "https://localhost:8080/", "height": 696 } }, "source": [ "d = {'time t_i': t, 'Adams Approx w': w}\n", "df = pd.DataFrame(data=d)\n", "df" ], "execution_count": 10, "outputs": [ { "output_type": "execute_result", "data": { "text/html": [ "
\n", "\n", "\n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", "
time t_iAdams Approx w
02000.06.000000
12001.06.084000
22002.06.960322
32003.07.892040
42004.08.863456
52005.09.856908
62006.010.853082
72007.011.832473
82008.012.776881
92009.013.670688
102010.014.501747
112011.015.261810
122012.015.946493
132013.016.554881
142014.017.088907
152015.017.552635
162016.017.951549
172017.018.291930
182018.018.580348
192019.018.823293
202020.019.026909
\n", "
" ], "text/plain": [ " time t_i Adams Approx w\n", "0 2000.0 6.000000\n", "1 2001.0 6.084000\n", "2 2002.0 6.960322\n", "3 2003.0 7.892040\n", "4 2004.0 8.863456\n", "5 2005.0 9.856908\n", "6 2006.0 10.853082\n", "7 2007.0 11.832473\n", "8 2008.0 12.776881\n", "9 2009.0 13.670688\n", "10 2010.0 14.501747\n", "11 2011.0 15.261810\n", "12 2012.0 15.946493\n", "13 2013.0 16.554881\n", "14 2014.0 17.088907\n", "15 2015.0 17.552635\n", "16 2016.0 17.951549\n", "17 2017.0 18.291930\n", "18 2018.0 18.580348\n", "19 2019.0 18.823293\n", "20 2020.0 19.026909" ] }, "metadata": {}, "execution_count": 10 } ] }, { "cell_type": "markdown", "metadata": { "id": "en3fHpW5aNsQ" }, "source": [ "## 3. Non-Linear Population Equation with an oscilation \n", "\\begin{equation} y^{'}=0.2y-0.01y^2+\\sin(2\\pi t), \\ \\ (2000 \\leq t \\leq 2020), \\end{equation}\n", "with the initial condition,\n", "\\begin{equation}y(2000)=6.\\end{equation}\n", "\n", "## Specific 2 Step Adams Moulton for the Non-Linear Population Equation with an oscilation\n", "\n", "The specific Adams-Moulton difference equation for the non-linear population equations is:\n", "\n", " \n", "\\begin{equation}w_{i+1}=w_{i}+\\frac{h}{2}\\big[ 0.2 w_{i+1}-0.01 w_{i+1}^2 +\\sin(2\\pi t_{i+1})\n", " + 0.2 w_i-0.01 w_i^2+\\sin(2\\pi t_{i})\\big] \\end{equation}\n", "\n", "\n", "for $i=1,...,199$, where $w_i$ is the numerical approximation of $y$ at time $t_i$, with step size $h$ and the initial condition\n", "\\begin{equation}w_0=6.\\end{equation}\n", "\n", " As $w_1$ is required for the method but unknown we will use the numerical solution of a one step method to approximate the value. Here, we use the 2nd order Runge Kutta approximation (see [Runge Kutta notebook](https://github.com/john-s-butler-dit/Numerical-Analysis-Python/blob/master/Chapter%2003%20-%20Runge%20Kutta/01_2nd%20Order%20Runge%20Kutta%20Population%20Equations.ipynb) )\n", "\\begin{equation}w_1=6.11.\\end{equation}\n", "\n", "\n", "PROBLEM WE CANNOT MOVE THE SQUARED (NON-LINEAR TERM) TO THE RIGHT HAND SIDE SO WE CAN SOLVE FOR w[i+1].\n", "For this reason we will use a predictor-corrector method,\n", "The predictor will be the 2-step Adams Bashforth\n", "\\begin{equation} w_{i+1}^{p}=w_{i}+\\frac{h}{2}\\big[ 3(0.2 w_{i}-0.01 w_{i}^2+\\sin(2\\pi t_{i}) \n", " - (0.2 w_{i-1}-0.01 w_{i-1}^2+\\sin(2\\pi t_{i-1}) \\big] \\end{equation}\n", "with the corrector being the 1-step Adams Moulton,\n", "\\begin{equation}w_{i+1}=w_{i}+\\frac{h}{2}\\big[ 0.2 w_{i+1}^p-0.01 (w^p_{i+1})^2 +\\sin(2\\pi t_{i+1}\n", " + 0.2 w_i-0.01 w_i^2+\\sin(2\\pi t_{i}\\big], \\end{equation} \n", "\n", " \n", "\n", "\n", "\n" ] }, { "cell_type": "code", "metadata": { "id": "xe5rYhvwaNsQ" }, "source": [ "def nonlin_oscfun(t,w):\n", " ftw=0.2*w-0.01*w*w+np.sin(2*np.math.pi*t)\n", " return ftw" ], "execution_count": 15, "outputs": [] }, { "cell_type": "code", "metadata": { "id": "DnpWjGBeaNsS" }, "source": [ "## INSERT METHOD HERE\n", "w=np.zeros(N+1)\n", "w[0]=6\n", "w[1]=6.11\n", "for n in range(1,N):\n", " w[n+1]=w[n]+h/2" ], "execution_count": 16, "outputs": [] }, { "cell_type": "markdown", "metadata": { "id": "VVsjcYDZaNsT" }, "source": [ "## Results\n", "The plot below shows the numerical approximation, $w$ (circles) for the non-linear population equation:" ] }, { "cell_type": "code", "metadata": { "id": "XuE0ZbhvaNsT", "outputId": "264e91fe-73f0-4d85-8f9c-860934f081e5", "colab": { "base_uri": "https://localhost:8080/", "height": 295 } }, "source": [ "fig = plt.figure(figsize=(8,4))\n", "plt.plot(t,w,'o:',color='purple',label='Adams-Moulton')\n", "plt.title('Population Equation with seasonal oscilation')\n", "plt.xlabel('time (yrs)')\n", "plt.ylabel('Population in Billions')\n", "plt.legend(loc='best')\n", "plt.show()" ], "execution_count": 17, "outputs": [ { "output_type": "display_data", "data": { "image/png": "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eYXHHnuMSy+9NK51iIiks4V3LWTO9XOoLK8E4NA/Hsr4qeMp6lkEBkU9ixg/dbyuKk+EDcs2RB2+Ze2WnVrutGnTOP/88wE44YQTmDZtGp988kl1AhsyZAhDhgypnv7+++9n6tSplJeXs3z5ct57773q8RMmTACgpKSETZs2UVhYSGFhIXl5eaxfv54RI0Zw2mmnUVZWxlFHHVVn4j7uuOM4/vjj+eCDDzjxxBOrD2+Xlpayfv16vve97wFwyimn8KMf/ajB7X/99dd5+OGHATjppJO45JJLqscdddRRZGVlMXDgQFauXNngdYiIpMrq91fz5HlPMuGWCbQtbsvYv44lrzCPrBbf7vOWTCxJeqKurckk7kkvTqp+np2TXeN1UY+i4DB5LVXnIQo6FtSYvnWX1vWub926dTz//PMsWrQIM6OiogIzY88994w6/Weffca1117Lm2++Sbt27Zg0aVKNqm9Ve8VZWVk19pCzsrIoLy/n4IMPZtasWTz++ONMmjSJCy+8kMLCwuo95sgL0rp06UJOTg7PPvss119/fVznpVu0aEFlZfArMhHV6CLb0MAaOyIiKVH+TTkt8lqQV5jH159+zdeffk3b4rYUdChIdWhAEzpUXpcxV41J+HmIBx98kJNOOomlS5eyZMkSvvjiC3r16sXee+/NPffcA8A777xTfTh8w4YNtGrViqKiIlauXMmTTz65Q+tbunQpnTt35swzz+SMM85g/vz5HH300SxYsIAFCxYwfPjwGtP/9re/5eqrryY7O7t6WFFREe3atas+P37XXXdV730XFxdXH9aPdU66sLCQjRs3Vr8eOXJk9bn9u+++m4MOOmiH2iQikk7cnfuOuY/pp0wHoE33Nkz5ZAq9Dkmv6o5NZo+7LlWHMRJZ3WbatGn84he/qDHshz/8IW+99RZbt25ljz32YI899mDvvfcGYOjQoey5557svvvu7LbbbhxwwAE7tL4XX3yRa665hpycHFq3bs2dd95Z5/QjR46MOvzf//43Z511Flu2bKF3797cfvvtAFx88cUcd9xxTJ06lR/84AdR5x0/fjzHHnssjzzyCDfccAM33HADp556Ktdccw2dOnWqXpaISCZZ8+EaOg7oiJmx28jdsGzD3TEzLCv9CkVZJhzGHD58uNe+F/r9999njz32SFFEkijajiLSmGqXKB0wfgBv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\n", "text/plain": [ "
" ] }, "metadata": { "needs_background": "light" } } ] }, { "cell_type": "markdown", "metadata": { "id": "hL4I-TJiaNsU" }, "source": [ "## Table\n", "The table below shows the time and the numerical approximation, $w$, for the non-linear population equation:" ] }, { "cell_type": "code", "metadata": { "id": "niNEjJ7taNsU", "outputId": "5f466dcd-820a-469a-e096-654ad9183ac7", "colab": { "base_uri": "https://localhost:8080/", "height": 696 } }, "source": [ "d = {'time t_i': t, 'Adams Approx w': w}\n", "df = pd.DataFrame(data=d)\n", "df\n" ], "execution_count": 18, "outputs": [ { "output_type": "execute_result", "data": { "text/html": [ "
\n", "\n", "\n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", "
time t_iAdams Approx w
02000.06.00
12001.06.11
22002.06.61
32003.07.11
42004.07.61
52005.08.11
62006.08.61
72007.09.11
82008.09.61
92009.010.11
102010.010.61
112011.011.11
122012.011.61
132013.012.11
142014.012.61
152015.013.11
162016.013.61
172017.014.11
182018.014.61
192019.015.11
202020.015.61
\n", "
" ], "text/plain": [ " time t_i Adams Approx w\n", "0 2000.0 6.00\n", "1 2001.0 6.11\n", "2 2002.0 6.61\n", "3 2003.0 7.11\n", "4 2004.0 7.61\n", "5 2005.0 8.11\n", "6 2006.0 8.61\n", "7 2007.0 9.11\n", "8 2008.0 9.61\n", "9 2009.0 10.11\n", "10 2010.0 10.61\n", "11 2011.0 11.11\n", "12 2012.0 11.61\n", "13 2013.0 12.11\n", "14 2014.0 12.61\n", "15 2015.0 13.11\n", "16 2016.0 13.61\n", "17 2017.0 14.11\n", "18 2018.0 14.61\n", "19 2019.0 15.11\n", "20 2020.0 15.61" ] }, "metadata": {}, "execution_count": 18 } ] }, { "cell_type": "code", "metadata": { "id": "PJDlx4T3aNsW" }, "source": [ "" ], "execution_count": 14, "outputs": [] }, { "cell_type": "code", "metadata": { "id": "4mr0t3ASaNsX" }, "source": [ "" ], "execution_count": 14, "outputs": [] }, { "cell_type": "code", "metadata": { "id": "TXqVYt6qaNsY" }, "source": [ "" ], "execution_count": 14, "outputs": [] } ] }